// 命令类：任务（Mission）
class Mission {
    private int enemyCount;  // 敌人数量

    public Mission(int enemyCount) {
        this.enemyCount = enemyCount;
    }

    public int getEnemyCount() {
        return enemyCount;
    }
}

// 责任链模式的抽象处理者类
abstract class Officer {
    protected Officer nextOfficer;  // 下一个级别的长官

    public void setNextOfficer(Officer nextOfficer) {
        this.nextOfficer = nextOfficer;
    }

    public abstract void issueCommand(Mission mission);  // 下达作战命令
}

// 班长类：处理敌人数量<10的情况
class Banzhang extends Officer {
    @Override
    public void issueCommand(Mission mission) {
        if (mission.getEnemyCount() < 10) {
            System.out.println("班长：敌人数量少，轻松处理任务。");
        } else if (nextOfficer != null) {
            nextOfficer.issueCommand(mission);  // 传递给下一个处理者
        }
    }
}

// 排长类：处理敌人数量在10到50之间的情况
class Paizhang extends Officer {
    @Override
    public void issueCommand(Mission mission) {
        if (mission.getEnemyCount() >= 10 && mission.getEnemyCount() < 50) {
            System.out.println("排长：敌人数量适中，任务可处理。");
        } else if (nextOfficer != null) {
            nextOfficer.issueCommand(mission);  // 传递给下一个处理者
        }
    }
}

// 营长类：处理敌人数量在50到200之间的情况
class Yingzhang extends Officer {
    @Override
    public void issueCommand(Mission mission) {
        if (mission.getEnemyCount() >= 50 && mission.getEnemyCount() < 200) {
            System.out.println("营长：敌人数量较多，可以处理任务。");
        } else if (nextOfficer != null) {
            nextOfficer.issueCommand(mission);  // 传递给下一个处理者
        }
    }
}

// 会议类：处理敌人数量>=200的情况
class Meeting extends Officer {
    @Override
    public void issueCommand(Mission mission) {
        if (mission.getEnemyCount() >= 200) {
            System.out.println("会议：敌人数量过多，需召开会议讨论。");
        } else if (nextOfficer != null) {
            nextOfficer.issueCommand(mission);  // 传递给下一个处理者
        }
    }
}

// 客户端：模拟战争指挥系统
public class WarCommandSystem {
    public static void main(String[] args) {
        // 创建不同级别的长官
        Officer banzhang = new Banzhang();
        Officer paizhang = new Paizhang();
        Officer yingzhang = new Yingzhang();
        Officer meeting = new Meeting();

        // 建立责任链
        banzhang.setNextOfficer(paizhang);
        paizhang.setNextOfficer(yingzhang);
        yingzhang.setNextOfficer(meeting);

        // 创建任务
        Mission mission1 = new Mission(5);
        Mission mission2 = new Mission(30);
        Mission mission3 = new Mission(150);
        Mission mission4 = new Mission(300);

        // 下达任务
        banzhang.issueCommand(mission1);  // 由班长处理
        banzhang.issueCommand(mission2);  // 由排长处理
        banzhang.issueCommand(mission3);  // 由营长处理
        banzhang.issueCommand(mission4);  // 召开会议处理
    }
}
